<?php

    global $mikron;

    // текущий активный кабинет
    $cabinet = $mikron->Site->auth->cabinet;
    $auth = $mikron->Site->auth;
    $cabinetamount = (int)$cabinet->amount->value;
    $chips = $mikron->Queries->Query('MARKET_ITEM', null, new Criterion('forsale', 1)); // фишки

    if($cabinet->lockexchange->value==1)
    {
        ?>{{nicewindow style=error caption=Внимание}}<?php
        echo "Вам запрещено посещение обменного пункта. Свяжитесь с администрацией сайта.";
        ?>{{/nicewindow}}<?php
        return null;
    }

    $step = isset($_REQUEST['step'])?(int)$_REQUEST['step']:1;
    if(isset($_REQUEST['back']))
    {
        $step = isset($_REQUEST['stepfrom'])?(int)$_REQUEST['stepfrom']:$step;
    }

    function startokform()
    {
        ?><div id="okdisplay"><?php
        startxform("Выполнено", $_SERVER['SCRIPT_NAME'], "okform", "get", "_silver", true);
        ?>
        <table cellspacing="0" cellpadding="4">
        <tr><td>
        <?php
    }

    function endokform()
    {
        ?>
        </td></tr>
        <tr><td>
            <input type="submit" onclick="okdisplay.style.display='none'; invblock.style.display=''; return false;" value="Закрыть">
        </table>
        <?php endxform(true); ?></div><?php
    }

    function show_messages($chips)
    {
        // если выводится сообщение об успешном действии
        if(array_key_exists('ok', $_REQUEST))
        {
            $ok = $_REQUEST['ok'];
            unset($_REQUEST['ok']);
            startokform();
            switch($ok)
            {
                case 'exchange':
                    ?>Обмен произведен успешно.<?php
                    unset($_REQUEST);
                    break;
            }
            endokform();
            return true;
        }

        // если выводится сообщение об ошибке
        if(array_key_exists('error', $_REQUEST))
        {
            $error = $_REQUEST['error'];
            unset($_REQUEST['error']);
            startxform("Внимание", $_SERVER['SCRIPT_NAME'], "okform", "get", "_silver");
            switch($error)
            {
                case "nomoney";
                    ?>Ошибка оформления заявки.
                    Недостаточно средств.<?php
                    break;
            }
            ?><br /><input type="submit" value="Закрыть"><?php
            endxform();
            return true;;
        }
        
        return false;
    }
    
    $invisible = show_messages($chips);
    if($invisible)
    {
        ?><div id="invblock" style="display: none;"><?php
    }

        // обработчик обмена
        startxform('Обмен', "/cabinet/?exchange", "form1");
        if($step == 1)
        {
            $chips->reset();
            $count = 0;
            while($chip = $chips->fetch())
            {
                $code = $chip->code->value;
                $count += $cabinet->$code->value;
            }
            if($count < 1)
            {
                startnicewindow("Информация", "_silver");
                echo "У Вас нет ни одного «шанса» на обмен.";
                endnicewindow();
            }
            else
            {
            ?>
                <table cellspacing="0" cellpadding="4">
                <tr><td>Что хотите обменять?</td></tr>
                <tr><td class="insideblock"><?php
                    $chips->reset();
                    while($chip = $chips->fetch())
                    {
                        $code = $chip->code->value;
                        ?><input type="radio" name="outcode" <?php echo ($cabinet->$code->value <1)?"disabled":""; ?>
                        onclick="document.form1.quantity1.disabled = false;"  value="<?php echo $code; ?>"> <font class="<?php echo ($cabinet->$code->value<1)?"disabledtext":""; ?>"><?php echo $chip->title->value; ?></font><br /><?php
                    }
                    ?></td>
                <tr><td>Укажите количество:</td></tr>
                <tr><td class="insideblock">
                    <input class="niceinput" id="quantity1" name="quantity" disabled size="4"
                    onKeyUp="document.form1.next1.disabled = (this.value=='');"> шт.
                </td></tr>
                <tr><td>
                <input type="hidden" name="step" value="2">
                <input type="hidden" name="stepfrom" value="1">
                <input type="submit" id="next1" value="Далее &rarr;" disabled>
                </td></tr></table>
                <?php
            }
        }
        if(($step > 0) && isset($_REQUEST['exchange']))
        {
            if($step == 2)
            {
                    $outcode = $_REQUEST['outcode'];
                    if(!IsMarketItemCode($outcode))
                    {
                        startnicewindow("Ошибка", "_error");
                        ?>
                        <p>Не выбран обмениваемый товар.</p>
                        <input type="hidden" name="stepfrom" value="1">
                        <input type="submit" name="back" value="&larr; Назад">
                        <?php
                        endnicewindow();
                    }
                    else
                    {
                        $quantity = (int)$_REQUEST['quantity'];
                        if($quantity < 1 || $quantity > $cabinet->$outcode->value)
                        {
                            startnicewindow("Внимание", "_error");
                            $step2=$step+1;
                            ?>
                            <p>Указано неверное количество шансов.
                            У Вас <?php echo $cabinet->$outcode->value; ?>,
                            а Вы указали <?php echo $quantity; ?>.</p>
                            <input type="hidden" name="stepfrom" value="1">
                            <input type="submit" name="back" value="&larr; Назад">
                            <?php
                            endnicewindow();
                        }
                        else
                        {
                            $outcode2 = quote_smart($outcode);
                            $out_items = $mikron->Queries->Query("MARKET_ITEM", null, new Criterion('code', $outcode));
                            if($out_items->count() == 1)
                            {
                                $out_item = $out_items[0];
                                $out_amount = $out_item->amount->value;
                                $out_amount_sum = $out_amount * $quantity;
                                $chips->reset();
                                ?>
                                <table cellspacing="0" cellpadding="4">
                                <tr><td>
                                    За указанное количество шансов Вы можете получить:
                                    <input type="hidden" name="outcode" value="<?php echo isset($_REQUEST['outcode'])&&IsMarketItemCode($_REQUEST['outcode'])?$_REQUEST['outcode']:""; ?>">
                                    <input type="hidden" name="quantity" value="<?php echo isset($_REQUEST['quantity'])?(int)$_REQUEST['quantity']:""; ?>">
                                </td></tr>
                                <tr><td class="insideblock">
                                    <input type="radio" onclick="check2();" name="incode" value="money"> <?php echo round($out_amount_sum/100,2); ?> руб. на баланс;<br />
                                    <?php
                                    while($chip = $chips->fetch())
                                    {
                                        if($chip->code->value != $outcode)
                                        {
                                            $amount = $chip->amount->value;
                                            if($amount <= $out_amount_sum)
                                            {
                                                $count = floor($out_amount_sum / $amount);
                                                if($count > 0)
                                                {
                                                    $cashback = $out_amount_sum % $amount;
                                                    ?><input type="radio" onclick="check2();" name="incode" value="<?php echo $chip->code->value; ?>"> <?php
                                                    echo "$count шт «".$chip->title->value."»";
                                                    if($cashback>0)
                                                    {
                                                        echo " плюс сдачи ".round($cashback/100,2)." руб. на баланс";  
                                                    }
                                                    echo ";<br />";
                                                }
                                            }
                                        }
                                    }
                                    ?>
                                </td></tr>
                                <tr><td>
                                    <input type="hidden" name="step" value="3">
                                    <input type="hidden" name="stepfrom" value="1">
                                    <input type="submit" name="back" value="&larr; Назад">
                                    <input type="submit" id="next2" value="Далее &rarr;">
                                </td></tr>
                                </table>
                                 <script type="text/javascript">
                                    document.form1.next2.disabled = true;
                                    function check2()
                                    {
                                        document.form1.next2.disabled = false;
                                    }
                                </script>
                                <?php
                            }
                        }
                    }
            }
            elseif($step==3)
            {
                $outcode = $_REQUEST['outcode'];
                $incode = $_REQUEST['incode'];
                $errorcodes = false;
                if(!IsMarketItemCode($outcode))
                {
                    $errorcodes = true;
                }
                if(!IsMarketItemCode($incode) && ($incode != "money"))
                {
                    $errorcodes = true;
                }
                if($outcode==$incode)
                {
                    $errorcodes = true;
                }
                if($errorcodes)
                {
                    startnicewindow("Ошибка", "_error");
                    ?>
                    <p>Неверный код обмениваемого товара.</p>
                    <input type="hidden" name="stepfrom" value="2">
                    <input type="submit" name="back" value="&larr; Назад">
                    <?php
                    endnicewindow();
                }
                else
                {
                    $outcode2 = quote_smart($outcode);
                    $quantity = $_REQUEST['quantity'];
                    if($quantity<1 || $quantity > $cabinet->$outcode->value)
                    {
                        startnicewindow("Внимание", "_error");
                        ?>
                        У Вас нет столько шансов. У Вас их <?php echo $cabinet->$outcode->value; ?>,
                        а Вы указали <?php echo $quantity; ?>. <a href="?exchange&state=1">Попробуйте еще.</a>
                        <input type="hidden" name="stepfrom" value="2">
                        <input type="submit" name="back" value="&larr; Назад">
                        <?php
                        endnicewindow();
                    }
                    else
                    {
                        // отдаваемый товар
                        $out_items = $mikron->Queries->Query('MARKET_ITEM', null, new Criterion('code', $outcode));
                        if($out_items->count() == 1)
                        {
                            $foplog = ChangeCabinetBalance($cabinet, 2, 0, 0, 0, 0, 0);
                            $out_item = $out_items->fetch();
                            $out_amount = $out_item->amount->value;
                            $out_amount_sum = $out_amount * $quantity;
                            $exchangeok = false;
                            // обмен на деньги
                            if($incode == 'money')
                            {
                                $foplog->$outcode->value = -$quantity;
                                $foplog->amount->value = $out_amount_sum;
                                $cabinet->amount->value += $out_amount_sum;
                                $cabinet->$outcode->value -= $quantity;
                                $exchangeok = true;
                            }
                            else
                            {
                                // обмен на другой товар
                                $chips->reset();
                                while($chip = $chips->fetch())
                                {
                                    if($chip->code->value == $incode)
                                    {
                                        $amount = $chip->amount->value;
                                        if($amount <= $out_amount_sum)
                                        {
                                            $count = floor($out_amount_sum / $amount);
                                            if($count > 0)
                                            {
                                                $cashback = $out_amount_sum % $amount;
                                                $foplog->$outcode->value = -$quantity;
                                                $foplog->$incode->value = $count;
                                                $foplog->amount->value = $cashback;
                                                $cabinet->$outcode->value -= $quantity;
                                                $cabinet->$incode->value += $count;
                                                $cabinet->amount->value += $cashback;
                                                $exchangeok = true;
                                            }
                                        }
                                    }
                                }
                            }
                            if($exchangeok)
                            {
                                OperationLogEcp($foplog, $cabinet);
                                $mikron->EntityManager->Save(Array($foplog, $cabinet));
                                header("Location: /cabinet/index.php?ok=exchange");
                                exit;
                                break;
                            }
                        }
                    }
                }
            }
        }
        endxform();

    if($invisible)
    {
        ?></div><?php
    }

?>